#include <iostream>
using namespace std;

class Complex{
public:
    //构造函数
    Complex(int x, int y)
    :_x(x),_y(y)
    {     }

    //输出流重载
    friend 
        ostream & operator<<(ostream & os, Complex & rhs);
        
    // 使用fried 友元函数的重载
    // 此要传递的参数除了右操作数，还有左操作数
   
    // 前置++： ++cont;
    // 先进行自增操作，再返回
    Complex & operator++(){
        _x++;
        _y++;
        return *this;
    }
 
    // 后置++： cont++;
    // 先返回内容再进行自增，此时需要用到一个临时对象充当返回值
    Complex  operator++(int){
        Complex temp = Complex(*this);
        _x++;
        _y++;
        return temp;
    }
private:
    int _x;
    int _y;
};


ostream & operator<<(ostream & os, Complex & rhs){
    os << "_x=" << rhs._x << " _y=" << rhs._y;
    return os;
}

void test(){
    Complex b(1,2);
    cout << b << endl;
    b++;
    cout << b << endl;
    ++b;
    cout << b << endl;
}

int main(int atgc, char * argv[])
{
    test();
    return 0;
}

